Nhóm hỗ trợ học tập cần một danh sách các lượt đăng ký đang học có kết quả gần đây bị giảm sút. Hãy so sánh mỗi sinh viên với chính kết quả trước đó của họ trong cùng một môn học.
Thống nhất các quy tắc
- Sử dụng hai giai đoạn:
trước đóvàgần đây. Mỗi giai đoạn có hai bài đánh giá có trọng số bằng nhau. - Yêu cầu ít nhất hai điểm không NULL trong mỗi giai đoạn trước khi so sánh điểm trung bình.
- Tính
decline_points = earlier_avg - recent_avg. - Mức giảm ít nhất 15 điểm nghĩa là Cần xem xét. Nếu không, một lượt đăng ký đủ điều kiện sẽ có Không cảnh báo.
- Giữ riêng Không đủ dữ liệu riêng biệt. Điểm 0 là điểm hợp lệ; còn NULL hoặc bản ghi bị thiếu không phải là điểm 0.
Chuẩn bị cơ sở dữ liệu của bạn
Mở tệp lab8_setup.sql được cung cấp trong thư mục TA DSAI2202/lab8/ trong pgAdmin và chạy toàn bộ tệp. Mỗi khi mở một kết nối mới, hãy dùng lại cài đặt kết nối ở bên phải.
Phần thiết lập cũng cung cấp performance_comparison, một truy vấn đã lưu được gọi là view. Nó sẽ hỗ trợ các bài tập sau này; đây không phải là một bảng bổ sung chứa kết quả đánh giá được lưu trữ.
SET search_path TO lab8;SET search_path TO lab8;
SELECT 'students' AS table_name, COUNT(*) AS row_count
FROM students
UNION ALL SELECT 'courses', COUNT(*) FROM courses
UNION ALL SELECT 'enrolments', COUNT(*) FROM enrolments
UNION ALL SELECT 'assessment_results', COUNT(*) FROM assessment_results
UNION ALL SELECT 'support_units', COUNT(*) FROM support_units
ORDER BY table_name;SET search_path TO lab8;
SELECT e.enrolment_id, e.student_id, e.course_code,
r.result_id, r.period, r.assessment_no, r.score
FROM enrolments AS e
JOIN assessment_results AS r
ON r.enrolment_id = e.enrolment_id
WHERE e.enrolment_id IN ('E01', 'E07', 'E08', 'E09', 'E24')
ORDER BY e.enrolment_id, r.period, r.assessment_no;Kiểm tra số lượng của phần thiết lập
| Bảng | Số hàng | Một hàng đại diện cho |
|---|---|---|
| students | 18 | Hồ sơ của một sinh viên |
| courses | 4 | Một môn học |
| enrolments | 24 | Lượt đăng ký của một sinh viên vào một môn học |
| assessment_results | 92 | Một kết quả đánh giá cho một lượt đăng ký và giai đoạn |
| support_units | 7 | Một đơn vị hỗ trợ trong bài tập tùy chọn về phân cấp |
Có 22 lượt đăng ký đang học và 2 lượt đã rút. Cuộc điều tra cuối cùng cần một hàng cho mỗi lượt đăng ký đang học, không phải một hàng cho mỗi bài đánh giá hay một hàng cho mỗi sinh viên trên tất cả các môn học.
Năm trường hợp cần theo dõi
| Lượt đăng ký | Môn học | Điểm trước đó | Điểm gần đây | Đủ bằng chứng? |
|---|---|---|---|---|
| E01 | SQL101 | 80, 90 | 60, 70 | Có |
| E07 | SQL101 | 80, NULL | 50, 50 | Không: chỉ có một điểm trước đó |
| E08 | SQL101 | 80, 80 | NULL, NULL | Không: không có điểm nào được chấm ở giai đoạn gần đây |
| E09 | SQL101 | Không có hàng nào | 60, 60 | Không: thiếu giai đoạn trước đó |
| E24 | STAT101 | 0, 0 | 0, 0 | Có |
Truy vấn kiểm tra trả về 18 hàng đánh giá. E09 chỉ có hai hàng; các bài đánh giá trước đó của nó không tồn tại. E08 có hai hàng gần đây, nhưng cả hai đều không có điểm được ghi nhận.
Kiểm tra hai ví dụ đủ điều kiện
E01: trung bình trước đó 85, trung bình gần đây 65, giảm 20 điểm → Cần xem xét. E24: cả hai trung bình đều là 0, giảm 0 → Không cảnh báo. Ba ví dụ còn lại cần được gắn nhãn Không đủ dữ liệu.